Data written to a mass memory medium may be improperly stored for several reasons. For example, the memory medium used may have imperfections and may degrade over time. These types of errors are magnified where the mass memory medium is small and the storage densities are large. This is particularly true of memory disks.
In order to cope with these errors, error correcting code (ECC) strategies are used to recover data that may have been corrupted. It is desirable to detect when data written to a memory medium has degraded to the point where the user is in danger of not being able to recover the data. If the degradation is detected in time, the data can be recovered and rewritten to a different part of the memory medium. This is done by immediately reading back a block of data that has just been written to the medium and comparing it with what was intended to be written.
In the past, several methods have been used to accomplish such a task. However, they all suffer from serious drawbacks that render them impractical.
One of these methods initially requires transferring a specified block of data from the host microprocessor to the local random access memory (RAM) of the mass memory system. The data block is then transferred from the RAM to the mass memory medium. It is then immediately read back from the medium and stored in the RAM. Both data blocks are then sent to the microprocessor that performs a comparison of what was read off the disk and what was intended to be written. However, this method is slow and costly since the host microprocessor must perform the data comparison.
It is therefore an object of the present invention to provide a system and method that verifies the integrity of data written to a mass memory medium independently of the host microprocessor.